/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package org.cip.esymons.eventos.beans;

import java.io.File;
import java.io.FileInputStream;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.servlet.http.HttpServletRequest;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
import org.cip.esymons.eventos.adapaters.RutaCarpetaReporte;
import org.cip.esymons.eventos.bc.AreaDelegate;
import org.cip.esymons.eventos.bc.CapituloDelegate;
import org.cip.esymons.eventos.bc.EventoDelegate;
import org.cip.esymons.eventos.be.Evento;
import org.cip.esymons.general.be.Area;
import org.cip.esymons.general.be.Capitulo;
import org.cip.esymons.general.util.ControladorAbstracto;

/**
 *
 * @author oscar
 */
public class ReporteEventosxOrganizadorController {

    String area;
    String capitulo;
    String tipoOrganizador = "1";
    EventoDelegate delegateEvento;
    List<Evento> listaEventosxOrganizador;
    Boolean filtarFechas = false;
    Date fechaInicio;
    Date fechaFin;
    RutaCarpetaReporte ruta;

    public ReporteEventosxOrganizadorController() {
        delegateEvento = new EventoDelegate();
        listaEventosxOrganizador = new ArrayList<Evento>();
        ruta = new RutaCarpetaReporte();
    }

    public List<Evento> getListaEventosxOrganizador() {
        return listaEventosxOrganizador;
    }

    public void setListaEventosxOrganizador(List<Evento> listaEventosxOrganizador) {
        this.listaEventosxOrganizador = listaEventosxOrganizador;
    }

    public Date getFechaFin() {
        return fechaFin;
    }

    public void setFechaFin(Date fechaFin) {
        this.fechaFin = fechaFin;
    }

    public Date getFechaInicio() {
        return fechaInicio;
    }

    public void setFechaInicio(Date fechaInicio) {
        this.fechaInicio = fechaInicio;
    }

    public Boolean getFiltarFechas() {
        return filtarFechas;
    }

    public void setFiltarFechas(Boolean filtarFechas) {
        this.filtarFechas = filtarFechas;
    }

    public String getTipoOrganizador() {
        return tipoOrganizador;
    }

    public void setTipoOrganizador(String tipoOrganizador) {
        this.tipoOrganizador = tipoOrganizador;
    }

    public String getArea() {
        return area;
    }

    public void setArea(String area) {
        this.area = area;
    }

    public String getCapitulo() {
        return capitulo;
    }

    public void setCapitulo(String capitulo) {
        this.capitulo = capitulo;
    }

    @SuppressWarnings("static-access")
    public String buscarEventosxCapitulo() {
        listaEventosxOrganizador = new ArrayList<Evento>();
        try {
            if (filtarFechas) {
                try {
                    if (fechaFin.compareTo(fechaInicio) >= 0) {
                        Capitulo cap = new Capitulo();
                        CapituloDelegate delegateCapitulo = new CapituloDelegate();
                        cap = delegateCapitulo.buscar(Integer.parseInt(capitulo));
                        listaEventosxOrganizador = delegateEvento.listaEventosxCapitulo(cap, true, fechaInicio, fechaFin);
                    } else {
                        ruta.error("Ingrese Las Fechas Correctamente");
                    }
                } catch (Exception ex) {
                    ruta.error("Ingrese Las Fechas Correctamente");
                }
            } else {
                Capitulo cap = new Capitulo();
                CapituloDelegate delegateCapitulo = new CapituloDelegate();
                cap = delegateCapitulo.buscar(Integer.parseInt(capitulo));
                listaEventosxOrganizador = delegateEvento.listaEventosxCapitulo(cap, false, fechaInicio, fechaFin);
            }
        } catch (Exception ex) {
        }
        return null;
    }

    @SuppressWarnings("static-access")
    public String buscarEventosxArea() {
        listaEventosxOrganizador = new ArrayList<Evento>();
        try {
            if (filtarFechas) {
                try {
                    if (fechaFin.compareTo(fechaInicio) >= 0) {
                        Area ar = new Area();
                        AreaDelegate delegateArea = new AreaDelegate();
                        ar = delegateArea.buscar(Integer.parseInt(area));
                        listaEventosxOrganizador = delegateEvento.listaEventosxArea(ar, true, fechaInicio, fechaFin);
                    } else {
                        ruta.error("Ingrese Las Fechas Correctamente");
                    }
                } catch (Exception ex) {
                    ruta.error("Ingrese Las Fechas Correctamente");
                }
            } else {
                Area ar = new Area();
                AreaDelegate delegateArea = new AreaDelegate();
                ar = delegateArea.buscar(Integer.parseInt(area));
                listaEventosxOrganizador = delegateEvento.listaEventosxArea(ar, false, fechaInicio, fechaFin);
            }

        } catch (Exception ex) {
            Logger.getLogger(ReporteEventosxOrganizadorController.class.getName()).log(Level.SEVERE, null, ex);
        }
        return null;
    }

    @SuppressWarnings("static-access")
    public String ReporteInscritosPDF() {
        if (listaEventosxOrganizador.size() > 0) {
            String rutaJasper = "", rutaPDF = "";
            String nombreJasper = "ReporteEventosxOrganizador";

            //rutaJasper = ruta.getRutaReporte() + nombreJasper + ".jasper";
            rutaJasper = ruta.getRutaJaspers() + nombreJasper + ".jasper";
            //logo windows:         C:/Reportes/logocipcdll.gif
            rutaPDF = ruta.getRutaPDF() + nombreJasper + ".pdf";    //ruta windows prueba
            //rutaPDF = ruta.getRutaPDF() + nombreJasper + ".pdf";   //ruta linux server
            //logo linux:          /root/Desktop/pdf/logocipcdll.gif
            HttpServletRequest request =  ControladorAbstracto.getRequest();
            rutaJasper = request.getRealPath(rutaJasper);
            //rutaPDF = request.getRealPath(rutaPDF);

            try {
                File entrada = new File(rutaJasper);
                JasperPrint print = JasperFillManager.fillReport(new FileInputStream(entrada), null, new JRBeanCollectionDataSource(listaEventosxOrganizador));
                if (ruta.generarPDF(rutaPDF, print)) {
                }
            } catch (Exception e) {
                System.out.println("-------" + e.toString());
            }
        } else {
            ruta.error("Deben existir datos en la Lista para exportar");
        }
        return "";
    }


}
